{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction to gQuant\n",
    "\n",
    "**gQuant** is a set of open-source examples for Quantitative Analysis tasks:\n",
    "- Data preparation & feat. engineering\n",
    "- Alpha seeking modeling\n",
    "- Technical indicators\n",
    "- Backtesting\n",
    "\n",
    "It is GPU-accelerated by leveraging [**RAPIDS.ai**](https://rapids.ai) technology, and has Multi-GPU and Multi-Node support.\n",
    "\n",
    "gQuant computing components are oriented around its plugins and task graph.\n",
    "\n",
    "## Download example datasets\n",
    "\n",
    "Before getting started, let's download the example datasets if not present."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset is already present. No need to re-download it.\n"
     ]
    }
   ],
   "source": [
    "! ((test ! -f './data/stock_price_hist.csv.gz' ||  test ! -f './data/security_master.csv.gz') && \\\n",
    "  cd .. && bash download_data.sh) || echo \"Dataset is already present. No need to re-download it.\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## About this notebook\n",
    "\n",
    "In this tutorial, we are going to use gQuant to do a simple quant job. The job tasks are listed below:\n",
    "    1. load csv stock data.\n",
    "    2. filter out the stocks that has average volume smaller than 50.\n",
    "    3. sort the stock symbols and datetime.\n",
    "    4. add rate of return as a feature into the table.\n",
    "    5. in two branches, computethe mean volume and mean return.\n",
    "    6. read the file containing the stock symbol names, and join the computed dataframes.\n",
    "    7. output the result in csv files.\n",
    "    \n",
    "## Task graphs, nodes and plugins\n",
    "\n",
    "Quant processing operators are defined as nodes that operates on **cuDF**/**dask_cuDF** dataframes.\n",
    "\n",
    "A **task graph** is a list of tasks composed of gQuant nodes.\n",
    "\n",
    "The cell below contains the task graph described before."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys; sys.path.insert(0, '..')\n",
    "import warnings; warnings.simplefilter(\"ignore\")\n",
    "\n",
    "from gquant.dataframe_flow import TaskSpecSchema \n",
    "\n",
    "# load csv stock data\n",
    "task_csvdata = {\n",
    "    TaskSpecSchema.task_id: 'load_csv_data',\n",
    "    TaskSpecSchema.node_type: 'CsvStockLoader',\n",
    "    TaskSpecSchema.conf: {'path': './data/stock_price_hist.csv.gz'},\n",
    "    TaskSpecSchema.inputs: []\n",
    "}\n",
    "\n",
    "# filter out the stocks that has average volume smaller than 50\n",
    "task_minVolume = {\n",
    "    TaskSpecSchema.task_id: 'min_volume',\n",
    "    TaskSpecSchema.node_type: 'VolumeFilterNode',\n",
    "    TaskSpecSchema.conf: {'min': 50.0},\n",
    "    TaskSpecSchema.inputs: ['load_csv_data']\n",
    "}\n",
    "\n",
    "# sort the stock symbols and datetime\n",
    "task_sort = {\n",
    "    TaskSpecSchema.task_id: 'sort',\n",
    "    TaskSpecSchema.node_type: 'SortNode',\n",
    "    TaskSpecSchema.conf: {'keys': ['asset', 'datetime']},\n",
    "    TaskSpecSchema.inputs: ['min_volume']\n",
    "}\n",
    "\n",
    "# add rate of return as a feature into the table\n",
    "task_addReturn = {\n",
    "    TaskSpecSchema.task_id: 'add_return',\n",
    "    TaskSpecSchema.node_type: 'ReturnFeatureNode',\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: ['sort']\n",
    "}\n",
    "\n",
    "# read the stock symbol name file and join the computed dataframes\n",
    "task_stockSymbol = {\n",
    "    TaskSpecSchema.task_id: 'stock_symbol',\n",
    "    TaskSpecSchema.node_type: 'StockNameLoader',\n",
    "    TaskSpecSchema.conf: {'path': './data/security_master.csv.gz'},\n",
    "    TaskSpecSchema.inputs: []\n",
    "}\n",
    "\n",
    "# In two branches, compute the mean volume and mean return seperately\n",
    "task_volumeMean = {\n",
    "    TaskSpecSchema.task_id: 'volume_mean',\n",
    "    TaskSpecSchema.node_type: 'AverageNode',\n",
    "    TaskSpecSchema.conf: {'column': 'volume'},\n",
    "    TaskSpecSchema.inputs: ['add_return']\n",
    "}\n",
    "\n",
    "task_returnMean = {\n",
    "    TaskSpecSchema.task_id: 'return_mean',\n",
    "    TaskSpecSchema.node_type: 'AverageNode',\n",
    "    TaskSpecSchema.conf: {'column': 'returns'},\n",
    "    TaskSpecSchema.inputs: ['add_return']\n",
    "}\n",
    "\n",
    "task_leftMerge1 = {\n",
    "    TaskSpecSchema.task_id: 'left_merge_1',\n",
    "    TaskSpecSchema.node_type: 'LeftMergeNode',\n",
    "    TaskSpecSchema.conf: {'column': 'asset'},\n",
    "    TaskSpecSchema.inputs: ['volume_mean', 'stock_symbol']\n",
    "}\n",
    "\n",
    "task_leftMerge2 = {\n",
    "    TaskSpecSchema.task_id: 'left_merge_2',\n",
    "    TaskSpecSchema.node_type: 'LeftMergeNode',\n",
    "    TaskSpecSchema.conf: {'column': 'asset'},\n",
    "    TaskSpecSchema.inputs: ['return_mean', 'stock_symbol']\n",
    "}\n",
    "\n",
    "# output the result in csv files\n",
    "\n",
    "task_outputCsv1 = {\n",
    "    TaskSpecSchema.task_id: 'output_csv_1',\n",
    "    TaskSpecSchema.node_type: 'OutCsvNode',\n",
    "    TaskSpecSchema.conf: {'path': 'symbol_volume.csv'},\n",
    "    TaskSpecSchema.inputs: ['left_merge_1']\n",
    "}\n",
    "\n",
    "task_outputCsv2 = {\n",
    "    TaskSpecSchema.task_id: 'output_csv_2',\n",
    "    TaskSpecSchema.node_type: 'OutCsvNode',\n",
    "    TaskSpecSchema.conf: {'path': 'symbol_returns.csv'},\n",
    "    TaskSpecSchema.inputs: ['left_merge_2']\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In Python, a gQuant task-spec is defined as a dictionary with the following fields:\n",
    "- `id`\n",
    "- `type`\n",
    "- `conf`\n",
    "- `inputs`\n",
    "- `filepath`\n",
    "\n",
    "As a best practice, we recommend using the `TaskSpecSchema` class for these fields, instead of strings.\n",
    "\n",
    "The `id` for a given task must be unique within a task graph. To use the result(s) of other task(s) as input(s) of a different task, we use the id(s) of the former task(s) in the `inputs` field of the next task.\n",
    "\n",
    "The `type` field contains the node type to use for the compute task. gQuant includes a collection of node classes. These can be found in `gquant.plugin_nodes`. Click [here](#node_class_example) to see a gQuant node class example.\n",
    "\n",
    "The `conf` field is used to parameterise a task. It lets you access user-set parameters within a plugin (such as `self.conf['min']` in the example above).\n",
    "\n",
    "The `filepath` field is used to specify a python module where a custom plugin is defined. It is optional if the plugin is in `plugin_nodes` directory, and mandatory when the plugin is somewhere else. In a different tutorial, we will learn how to create custom plugins.\n",
    "\n",
    "A custom node schema will look something like this:\n",
    "```\n",
    "custom_task = {\n",
    "    TaskSpecSchema.task_id: 'custom_calc',\n",
    "    TaskSpecSchema.node_type: 'CustomNode',\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: ['some_other_node'],\n",
    "    TaskSpecSchema.filepath: 'custom_nodes.py'\n",
    "}\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Below, we compose our task graph and visualize it as a graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from gquant.dataframe_flow import TaskGraph\n",
    "\n",
    "# list of nodes composing the task graph\n",
    "task_list = [\n",
    "    task_csvdata, task_minVolume, task_sort, task_addReturn,\n",
    "    task_stockSymbol, task_volumeMean, task_returnMean,\n",
    "    task_leftMerge1, task_leftMerge2,\n",
    "    task_outputCsv1, task_outputCsv2]\n",
    "\n",
    "task_graph = TaskGraph(task_list)\n",
    "task_graph.draw(show='ipynb')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will use `save_taskgraph` method to save the task graph to a **yaml file**.\n",
    "\n",
    "That will allow us to re-use it in the future."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "task_graph_file_name = '01_tutorial_task_graph.yaml'\n",
    "\n",
    "task_graph.save_taskgraph(task_graph_file_name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is a snippet of the content in the resulting yaml file:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "- id: load_csv_data\n",
      "  type: CsvStockLoader\n",
      "  conf:\n",
      "    path: ./data/stock_price_hist.csv.gz\n",
      "  inputs: []\n",
      "- id: min_volume\n",
      "  type: VolumeFilterNode\n",
      "  conf:\n",
      "    min: 50.0\n",
      "  inputs:\n",
      "  - load_csv_data\n",
      "- id: sort\n",
      "  type: SortNode\n",
      "  conf:\n",
      "    keys:\n",
      "    - asset\n",
      "    - datetime\n",
      "  inputs:\n",
      "  - min_volume\n"
     ]
    }
   ],
   "source": [
    "%%bash -s \"$task_graph_file_name\"\n",
    "head -n 19 $1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The yaml file describes the computation tasks. We can load it and visualize it as a graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "task_graph = TaskGraph.load_taskgraph(task_graph_file_name)\n",
    "task_graph.draw(show='ipynb')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Building a task graph\n",
    "\n",
    "Running the task graph is the next logical step. Nevertheless, it can optionally be built before running it.\n",
    "\n",
    "By calling `build` method, the graph is traversed without running the dataframe computations. This could be useful to inspect the column names and types, validate that the plugins can be instantiated, and check for errors.\n",
    "\n",
    "The output of `build` are instances of each task in a dictionary.\n",
    "\n",
    "In the example below, we inspect the column names and types for the inputs and outputs of the `left_merge_1` task:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Output of build task graph are instances of each task in a dictionary:\n",
      "\n",
      "load_csv_data: <NodeInTaskGraph gquant.plugin_nodes.dataloader.csvStockLoader.CsvStockLoader object at 0x7fedff3fb898>\n",
      "min_volume: <NodeInTaskGraph gquant.plugin_nodes.transform.volumeFilterNode.VolumeFilterNode object at 0x7fedff439390>\n",
      "sort: <NodeInTaskGraph gquant.plugin_nodes.transform.sortNode.SortNode object at 0x7fedf9c1c1d0>\n",
      "add_return: <NodeInTaskGraph gquant.plugin_nodes.transform.returnFeatureNode.ReturnFeatureNode object at 0x7fedf9c1c390>\n",
      "stock_symbol: <NodeInTaskGraph gquant.plugin_nodes.dataloader.stockNameLoader.StockNameLoader object at 0x7fedf9c1c588>\n",
      "volume_mean: <NodeInTaskGraph gquant.plugin_nodes.transform.averageNode.AverageNode object at 0x7fedf9c1c780>\n",
      "return_mean: <NodeInTaskGraph gquant.plugin_nodes.transform.averageNode.AverageNode object at 0x7fedf9c1c978>\n",
      "left_merge_1: <NodeInTaskGraph gquant.plugin_nodes.transform.leftMergeNode.LeftMergeNode object at 0x7fedf9c1cb70>\n",
      "left_merge_2: <NodeInTaskGraph gquant.plugin_nodes.transform.leftMergeNode.LeftMergeNode object at 0x7fedf9c1cd68>\n",
      "output_csv_1: <NodeInTaskGraph gquant.plugin_nodes.analysis.outCsvNode.OutCsvNode object at 0x7fedf9c1cf60>\n",
      "output_csv_2: <NodeInTaskGraph gquant.plugin_nodes.analysis.outCsvNode.OutCsvNode object at 0x7fedf9c2e198>\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from pprint import pprint\n",
    "\n",
    "task_graph.build()\n",
    "\n",
    "print('Output of build task graph are instances of each task in a dictionary:\\n')\n",
    "print(str(task_graph))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input columns in incoming dataframes:\n",
      "\n",
      "{0: {'asset': 'int64', 'volume': 'float64'},\n",
      " 1: {'asset': 'int64', 'asset_name': 'object'}}\n"
     ]
    }
   ],
   "source": [
    "# Input columns in 'left_merge_1' node\n",
    "\n",
    "print('Input columns in incoming dataframes:\\n')\n",
    "pprint(task_graph['left_merge_1'].input_columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Output columns in outgoing dataframe:\n",
      "\n",
      "{'asset': 'int64', 'asset_name': 'object', 'volume': 'float64'}\n"
     ]
    }
   ],
   "source": [
    "# Output columns in 'left_merge_1' node\n",
    "\n",
    "print('Output columns in outgoing dataframe:\\n')\n",
    "pprint(task_graph['left_merge_1'].output_columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Running a task graph\n",
    "\n",
    "To execute the graph computations, we will use the `run` method.\n",
    "\n",
    "It requires a tasks list and outputs list. `run` can also takes an optional `replace` argument which is used and explained later on."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "outputs = ['load_csv_data', 'output_csv_1', 'output_csv_2']\n",
    "csv_data_df, csv_1_df, csv_2_df = task_graph.run(outputs=outputs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can profile each of the computation node running time by turning on the profiler."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id:load_csv_data process time:3.874s\n",
      "id:min_volume process time:0.199s\n",
      "id:sort process time:0.125s\n",
      "id:add_return process time:0.221s\n",
      "id:volume_mean process time:0.050s\n",
      "id:return_mean process time:0.045s\n",
      "id:stock_symbol process time:0.015s\n",
      "id:left_merge_1 process time:0.003s\n",
      "id:output_csv_1 process time:0.020s\n",
      "id:left_merge_2 process time:0.003s\n",
      "id:output_csv_2 process time:0.020s\n"
     ]
    }
   ],
   "source": [
    "outputs = ['load_csv_data', 'output_csv_1', 'output_csv_2']\n",
    "csv_data_df, csv_1_df, csv_2_df = task_graph.run(outputs=outputs, profile=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Where most of the time is spent on the csv file processing. This is because we have to convert the time string to the proper format via CPU. Let's inspect the content of `csv_1_df` and `csv_2_df`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "csv_1_df content:\n",
      "       asset       volume asset_name\n",
      "0     869584   673.625235        LPT\n",
      "1     869589   110.456066       DSLV\n",
      "2     869590    66.607253       BPTH\n",
      "3     869592    56.041766         SP\n",
      "4     869349    91.161991       VIIX\n",
      "...      ...          ...        ...\n",
      "3679    5890  1386.894587        DRI\n",
      "3680    5891   164.916612        DRL\n",
      "3681    5893   336.161817        DRQ\n",
      "3682    5896   453.901682        DSL\n",
      "3683    5897    82.365824        DSM\n",
      "\n",
      "[3684 rows x 3 columns]\n",
      "\n",
      "csv_2_df content:\n",
      "       asset   returns asset_name\n",
      "0     869584  0.000369        LPT\n",
      "1     869589  0.001077       DSLV\n",
      "2     869590  0.005321       BPTH\n",
      "3     869592  0.000502         SP\n",
      "4     708893 -0.000588        UCP\n",
      "...      ...       ...        ...\n",
      "3679   23748  0.001471       FBHS\n",
      "3680   23750 -0.000059        BUI\n",
      "3681   23752  0.006837       TEAR\n",
      "3682   23755  0.000506        PUK\n",
      "3683   23762  0.003529       TPLM\n",
      "\n",
      "[3684 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "print('csv_1_df content:')\n",
    "print(csv_1_df)\n",
    "\n",
    "print('\\ncsv_2_df content:')\n",
    "print(csv_2_df)   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Also, please notice that two resulting csv files has been created:\n",
    "- symbol_returns.csv\n",
    "- symbol_volume.csv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "csv files created:\n",
      "./symbol_returns.csv\n",
      "./symbol_volume.csv\n"
     ]
    }
   ],
   "source": [
    "print('\\ncsv files created:')\n",
    "!find . -iname \"*symbol*\" "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Subgraphs\n",
    "\n",
    "A nice feature of task graphs is that we can evaluate any **subgraph**. For instance, if you are only interested in the `volume_mean` result, you can run only the tasks which are relevant for that computation.\n",
    "\n",
    "If we would not want to re-run tasks, we could also use the `replace` argument of the `run` function with a `load` option.\n",
    "\n",
    "The `replace` argument needs to be a dictionary where each key is the task/node id. The values are a replacement task-spec dictionary (i.e. each key is a spec overload, and its value is what to overload with).\n",
    "\n",
    "In the example below, instead of re-running the `load_csv_data` node to load a csv file into a `cudf` dataframe, we will use its dataframe output to load from it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       asset        volume\n",
      "0        631    350.260026\n",
      "1        914    266.223774\n",
      "2       1404   2073.529168\n",
      "3       1544     80.659223\n",
      "4       1545  18922.826861\n",
      "...      ...           ...\n",
      "3679  869577    147.814845\n",
      "3680  869584    673.625235\n",
      "3681  869589    110.456066\n",
      "3682  869590     66.607253\n",
      "3683  869592     56.041766\n",
      "\n",
      "[3684 rows x 2 columns]\n"
     ]
    }
   ],
   "source": [
    "replace = {\n",
    "    'load_csv_data': {\n",
    "        'load': csv_data_df,\n",
    "        'save': True\n",
    "    }\n",
    "}\n",
    "\n",
    "(volume_mean_df, ) = task_graph.run(outputs=['volume_mean'],\n",
    "                                    replace=replace)\n",
    "\n",
    "print(volume_mean_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a convenience, we can save on disk the checkpoints for any of the nodes, and re-load them if needed. It is only needed to set the save option to `True`.\n",
    "\n",
    "In the example above, the `replace` spec directs `run` to save on disk for the `load_csv_data`. If `load` was boolean then the data would be loaded from disk presuming the data was saved to disk in a prior run.\n",
    "\n",
    "The default directory for saving is `<current_workdir>/.cache/<node_id>.hdf5`.\n",
    "\n",
    "`replace` is also used to override parameters in the tasks. For instance, if we wanted to use the value `40.0` instead `50.0` in the task `min_volume`, we would do something similar to:\n",
    "```\n",
    "replace_spec = {\n",
    "    'min_volume': {\n",
    "        'conf': {\n",
    "            'min': 40.0\n",
    "        }\n",
    "    },\n",
    "    'some_task': etc...\n",
    "}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Return mean Dataframe:\n",
      "\n",
      "       asset   returns\n",
      "0        631  0.000026\n",
      "1        914 -0.000893\n",
      "2       1404  0.000423\n",
      "3       1544  0.001153\n",
      "4       1545  0.000784\n",
      "...      ...       ...\n",
      "3679  869577 -0.000276\n",
      "3680  869584  0.000369\n",
      "3681  869589  0.001077\n",
      "3682  869590  0.005321\n",
      "3683  869592  0.000502\n",
      "\n",
      "[3684 rows x 2 columns]\n"
     ]
    }
   ],
   "source": [
    "replace = {'load_csv_data': {'load': True},\n",
    "           'return_mean': {'save': True}}\n",
    "\n",
    "\n",
    "(return_mean_df, ) = task_graph.run(outputs=['return_mean'], replace=replace)\n",
    "\n",
    "print('Return mean Dataframe:\\n')\n",
    "print(return_mean_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we might want to load the `return_mean_df` from the saved file and evaluate only tasks that we are interested in.\n",
    "\n",
    "In the cells below, we compare different load approaches:\n",
    "- in-memory,\n",
    "- from disk, \n",
    "- and not loading at all.\n",
    "\n",
    "When working interactively, or in situations requiring iterative and explorative task graphs, a significant amount of time is saved by just re-loading the data that do not require to be recalculated."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using in-memory dataframes for load:\n",
      "CPU times: user 51 ms, sys: 804 µs, total: 51.8 ms\n",
      "Wall time: 49.8 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "print('Using in-memory dataframes for load:')\n",
    "\n",
    "replace = {'load_csv_data': {'load': csv_data_df},\n",
    "           'return_mean': {'load': return_mean_df}}\n",
    "\n",
    "_ = task_graph.run(outputs=['output_csv_2'], replace=replace)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using cached dataframes on disk for load:\n",
      "CPU times: user 61 ms, sys: 716 µs, total: 61.7 ms\n",
      "Wall time: 59.2 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "print('Using cached dataframes on disk for load:')\n",
    "\n",
    "replace = {'load_csv_data': {'load': True},\n",
    "           'return_mean': {'load': True}}\n",
    "\n",
    "_ = task_graph.run(outputs=['output_csv_2'], replace=replace)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Re-running dataframes calculations instead of using load:\n",
      "CPU times: user 873 ms, sys: 691 ms, total: 1.56 s\n",
      "Wall time: 1.63 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "print('Re-running dataframes calculations instead of using load:')\n",
    "\n",
    "replace = {'load_csv_data': {'load': True}}\n",
    "\n",
    "_ = task_graph.run(outputs=['output_csv_2'], replace=replace)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "An idiomatic way to save data, if not on disk, or load data, if present on disk, is demonstrated below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 50.5 ms, sys: 8.23 ms, total: 58.8 ms\n",
      "Wall time: 56.2 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "import os\n",
    "\n",
    "loadsave_csv_data    = 'load' if os.path.isfile('./.cache/load_csv_data.hdf5') else 'save'\n",
    "loadsave_return_mean = 'load' if os.path.isfile('./.cache/return_mean.hdf5') else 'save'\n",
    "\n",
    "replace = {'load_csv_data': {loadsave_csv_data: True},\n",
    "           'return_mean': {loadsave_return_mean: True}}\n",
    "\n",
    "_ = task_graph.run(outputs=['output_csv_2'], replace=replace)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Delete temporary files\n",
    "\n",
    "A few cells above, we generated a .yaml file containing the example task graph, and also a couple of CSV files.\n",
    "\n",
    "Let's keep our directory clean, and delete them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash -s \"$task_graph_file_name\"\n",
    "rm -f $1 symbol_returns.csv symbol_volume.csv # clean up"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id='node_class_example'></a>\n",
    "\n",
    "---\n",
    "\n",
    "## Node class example\n",
    "\n",
    "Implementing custom nodes in gQuant is very straighforward.\n",
    "\n",
    "Data scientists only need to override two methods in the parent class `Node`:\n",
    "- `columns_setup`\n",
    "- `process`\n",
    "\n",
    "`columns_setup` method  is used to define the required column names and types for both input and output dataframes.\n",
    "\n",
    "`process` method takes input dataframes and computes the output dataframe. \n",
    "\n",
    "In this way, dataframes are strongly typed, and errors can be detected early before the time-consuming computation happens.\n",
    "\n",
    "Below, it can be observed `VolumeFilterNode` implementation details:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "class VolumeFilterNode(Node):\n",
      "\n",
      "    def columns_setup(self):\n",
      "        self.required = {\"asset\": \"int64\",\n",
      "                         \"volume\": \"float64\"}\n",
      "        self.addition = {\"mean_volume\": \"float64\"}\n",
      "\n",
      "    def process(self, inputs):\n",
      "        \"\"\"\n",
      "        filter the dataframe based on the min and max values of the average\n",
      "        volume for each fo the assets.\n",
      "\n",
      "        Arguments\n",
      "        -------\n",
      "         inputs: list\n",
      "            list of input dataframes.\n",
      "        Returns\n",
      "        -------\n",
      "        dataframe\n",
      "        \"\"\"\n",
      "\n",
      "        input_df = inputs[0]\n",
      "        volume_df = input_df[['volume', \"asset\"]].groupby(\n",
      "                [\"asset\"]).mean().reset_index()\n",
      "        volume_df.columns = [\"asset\", 'mean_volume']\n",
      "        merged = input_df.merge(volume_df, on=\"asset\", how='left')\n",
      "        if 'min' in self.conf:\n",
      "            minVolume = self.conf['min']\n",
      "            merged = merged.query('mean_volume >= %f' % (minVolume))\n",
      "        if 'max' in self.conf:\n",
      "            maxVolume = self.conf['max']\n",
      "            merged = merged.query('mean_volume <= %f' % (maxVolume))\n",
      "        return merged\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import inspect\n",
    "from gquant.plugin_nodes.transform import VolumeFilterNode\n",
    "\n",
    "print(inspect.getsource(VolumeFilterNode))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
